package utilidades;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;

import clasesBasicas.Noticia;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

/** Clase Reader que permite la lectura de las noticias en RSS.
 * @author kevincifuentes
 *
 */
public class Reader {
	
	
	/**
	 *  Constructor que crea un Reader sin parámetros.
	 */
	public Reader() {
		super();
		// TODO Auto-generated constructor stub
	}

	private int contador;



	/** Método que obtiene las noticias.
	 * @param texto La url de donde se obtienen las noticias
	 * @return Devuelve las noticias en un arraylist
	 * @throws Exception Devuelve Excepción si no se puede obtener las noticias.
	 */
	public ArrayList<Noticia> noticias(String texto) throws Exception{
		
		contador=0;
		XmlReader reader = null;
		URL url = new URL(texto);
		ArrayList<Noticia> aux = new ArrayList<Noticia>();

		try {

			reader = new XmlReader(url);
			SyndFeed feed = new SyndFeedInput().build(reader);
			//System.out.println("Feed Title: "+ feed.getAuthor());

			for (Iterator i = feed.getEntries().iterator(); i.hasNext();) 
			{
				contador ++;
				SyndEntry entry = (SyndEntry) i.next();
				Noticia n= new Noticia(entry.getTitle(),entry.getLink());

				aux.add(n);
			}
		}finally {
			if (reader != null)
				reader.close();
		}
		return aux;
	}
			
	

	
	public static void main(String[] args) throws Exception {

//	    URL url  = new URL("http://viralpatel.net/blogs/feed"); no funciona
//		URL url  = new URL("http://www.bolsamadrid.es/esp/aspx/RSS/RSS.ashx?feed=Revista"); //Parecia a la ultima
		// Noticias variadas 
//		URL url  = new URL("http://www.eleconomista.es/rss/rss-espania.php"); //Esta es bastante buena (Si vamos
		// a poner noticias de todo tipo está bien)
		//Las noticias más interesantes para el economista
		//URL url  = new URL("http://www.eleconomista.es/rss/rss-seleccion-ee.php"); //Noticias importantes
		
//		URL url  = new URL("http://www.eleconomista.es/rss/rss-economia.php"); //Noticias economia
//	    XmlReader reader = null;
//	    URL url  = new URL("http://estaticos.marca.com/rss/portada.xml"); //Noticias de deporte.
//		URL url  = new URL("http://www.autobild.es/noticias/rss"); //Noticias de motor
//	    URL url  = new URL("http://www.abc.es/rss/feeds/abc_Sociedad.xml"); //Noticias de sociedad
	    
	  Reader r = new Reader();
	  ArrayList<Noticia> aux = r.noticias("http://www.abc.es/rss/feeds/abc_Sociedad.xml");
	  
	  for(int i = 0; i < r.getContador() ; i++){
		  aux.get(i).visualizar();
	  }
	  System.out.println();
	  
	  ArrayList<Noticia> aux2 = r.noticias("http://estaticos.marca.com/rss/portada.xml");
	  
	  for(int i = 0; i < r.getContador() ; i++){
		  System.out.println();
		  aux2.get(i).visualizar();
	  }
	  
	}




	/** Método que devuelve el contador de noticias
	 * @return El contador de noticias
	 */
	public int getContador() {
		// TODO Auto-generated method stub
		return contador;
	}
}
